package demo;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class AviationTaxCalculator {
    
    public static BigDecimal calculateVAT(BigDecimal ticketPrice, BigDecimal fuelSurcharge) {
        // 增值税税率为9%
        BigDecimal taxRate = new BigDecimal("0.09");
        
        // 计算基数 = 票面价 + 燃油附加费
        BigDecimal taxBase = ticketPrice.add(fuelSurcharge);
        
        // 计算增值税税额，四舍五入到小数点后2位
        BigDecimal vat = taxBase.multiply(taxRate)
                               .setScale(2, RoundingMode.HALF_UP);
        
        return vat;
    }
    
    public static void main(String[] args) {
        // 示例数据
        BigDecimal ticketPrice = new BigDecimal("1522.94");
        BigDecimal fuelSurcharge = new BigDecimal("18.35");
        
        BigDecimal vat = calculateVAT(ticketPrice, fuelSurcharge);
        System.out.println("增值税税额: " + vat);  // 输出: 138.71
        
        // 验证计算过程
        BigDecimal taxBase = ticketPrice.add(fuelSurcharge);  // 1541.29
        BigDecimal expectedVAT = taxBase.multiply(new BigDecimal("0.09"))
                                      .setScale(2, RoundingMode.HALF_UP);  // 138.7161 → 138.72
        
        // 注意：示例中给出的138.71与计算结果138.72有1分钱差异
        // 这可能是航空公司系统使用了不同的舍入方式或计算顺序
        System.out.println("验证计算结果: " + expectedVAT);
        
        // 如果需要完全匹配航空公司系统的138.71结果，可能需要使用不同的舍入方式
        BigDecimal alternativeVAT = taxBase.multiply(new BigDecimal("0.09"))
                                          .setScale(2, RoundingMode.DOWN);  // 138.7161 → 138.71
        System.out.println("向下舍入结果: " + alternativeVAT);
    }
}